/**
 * 动态TabBar管理
 * @author Wu.Liang
 * @date 2025-01-30
 */

import { useAuthStore, useUserStore } from '@/store'

/**
 * 动态TabBar配置
 */
const tabBarConfig = {
  // 首页 - 所有用户都可以访问
  home: {
    pagePath: 'pages/index/index',
    text: '首页',
    iconPath: 'static/icons/home.png',
    selectedIconPath: 'static/icons/home-active.png',
    requiredPermission: null, // 不需要权限
    requiredRole: null
  },
  
  // 服务 - 需要基本权限
  services: {
    pagePath: 'pages/services/services',
    text: '服务',
    iconPath: 'static/icons/service.png',
    selectedIconPath: 'static/icons/service-active.png',
    requiredPermission: null, // 不需要权限
    requiredRole: null
  },
  
  // 个人中心 - 所有登录用户都可以访问
  profile: {
    pagePath: 'pages/profile/index',
    text: '我的',
    iconPath: 'static/icons/profile.png',
    selectedIconPath: 'static/icons/profile-active.png',
    requiredPermission: null, // 不需要权限
    requiredRole: null
  }
}

/**
 * 动态TabBar管理类
 */
export class DynamicTabBar {
  /**
   * 获取用户可访问的TabBar配置
   */
  static getAccessibleTabBars() {
    // TabBar固定为三个菜单：首页、服务、我的
    return [tabBarConfig.home, tabBarConfig.services, tabBarConfig.profile]
  }
  
  /**
   * 检查用户是否可以访问某个Tab
   */
  static canAccessTab(tab, authStore, userStore) {
    // TabBar只有三个固定菜单，都不需要特殊权限检查
    return true
  }
  
  /**
   * 更新TabBar配置
   */
  static updateTabBar() {
    try {
      const accessibleTabs = this.getAccessibleTabBars()
      
      // 更新pages.json中的tabBar配置
      const pagesJson = require('@/pages.json')
      pagesJson.tabBar.list = accessibleTabs
      
      // 保存配置
      // 注意：在UniApp中，pages.json是静态配置，无法动态修改
      // 这里只是提供配置，实际需要在pages.json中预定义所有可能的TabBar
      console.log('动态TabBar配置:', accessibleTabs)
      
      return accessibleTabs
    } catch (error) {
      console.error('更新TabBar配置失败:', error)
      return [tabBarConfig.home, tabBarConfig.profile]
    }
  }
  
  /**
   * 获取当前可访问的TabBar列表
   */
  static getCurrentTabBarList() {
    return this.getAccessibleTabBars()
  }
  
  /**
   * 检查页面是否在TabBar中
   */
  static isTabBarPage(pagePath) {
    const accessibleTabs = this.getAccessibleTabBars()
    return accessibleTabs.some(tab => tab.pagePath === pagePath)
  }
}

/**
 * 导出TabBar配置
 */
export { tabBarConfig }

/**
 * 获取动态TabBar列表
 */
export function getDynamicTabBarList() {
  return DynamicTabBar.getCurrentTabBarList()
}

/**
 * 检查页面是否在TabBar中
 */
export function isTabBarPage(pagePath) {
  return DynamicTabBar.isTabBarPage(pagePath)
}
